package com.threeox.commonlibrary.adapter.base;

import com.threeox.commonlibrary.inter.ILifecycleListener;

import java.util.List;

/**
 * 
 * @ClassName: IAdapter
 * 
 * @Description: TODO(Adapter的扩展基类)
 * 
 * @author 赵屈犇
 * 
 * @date 创建时间:2016-9-13 上午11:46:31
 * 
 */
@SuppressWarnings("rawtypes")
public interface IAdapter<T> extends ILifecycleListener {

	/**
	 * 删除指定的数据根据position
	 * 
	 * @param position
	 * @return
	 */
	IAdapter remove(int position);

	/**
	 * 删除指定的数据根据对象
	 * 
	 * @param t
	 * @return
	 */
	IAdapter remove(T t);

	/**
	 * 删除所有数据
	 * 
	 * @return
	 */
	IAdapter removeAll();

	/**
	 * 根据pos更新数据
	 * 
	 * @param pos
	 * @param t
	 * @return
	 */
	IAdapter update(int pos, T t);

	/**
	 * 添加所有数据到指定的列
	 *
	 * @param pos
	 * @param list
	 * @return
	 */
	IAdapter addAll(int pos, List<T> list);

	/**
	 * 添加所有数据
	 * 
	 * @param list
	 * @return
	 */
	IAdapter addAll(List<T> list);

	/**
	 * 添加指定数据
	 * 
	 * @param t
	 * @return
	 */
	IAdapter add(T t);

	/**
	 * 添加数据到指定的列
	 *
	 * @param pos
	 * @param t
	 * @return
	 */
	IAdapter add(int pos, T t);

	/**
	 * 得到所有数据
	 * 
	 * @return
	 */
	List<T> getDatas();

	/**
	 * 得到总数据
	 * 
	 * @return
	 */
	int getCount();

	/**
	 * 更新Adapter数据
	 */
	void notifyDataSetChanged();

	/**
	 * 设置当前的滚动状态
	 *
	 * @param scrollState
	 */
	void setScrollState(boolean scrollState);
}
